#!/bin/bash
#jenkins  maven项目执行的脚本
#当前发布环境类型
CUR_ENV=$1
#DOCKER_NAMES=$(docker ps -a --format '{{.Names}}')
#判断是否拥有公共服务环境
HAD_ENV=0
#应用名称
APP_NAME=$2
#是否横向拓展应用，此参数从Jenkins调用时候传进来,no表示不进行横向拓展，yes表示进行横向拓展应用
IS_HORIZONTAL_EXPANSION=$3
#包含路径的jar包
TARGET_JAR=$4
#部署的目标服务器ip
IP=$5
#应用端口
APP_PORT=$6
CHANGE_LOG=$(git show -s --pretty=%s)
GIT_USER_NAME=$(git show -s --pretty=%an)
USER_NAME=jenkins
REMOTE_CMD="sudo  ~/${CUR_ENV}/${APP_NAME}/deploy/agent.sh $CUR_ENV $APP_NAME $IS_HORIZONTAL_EXPANSION $IP $APP_PORT $BUILD_NUMBER"



main()
{
	echo "#当前发布环境类型:$CUR_ENV，连接的服务器IP：$IP"
	echo "初始化脚本运行环境"
	
	
	echo "检查目标机器是否有$APP_NAME文件夹   $CUR_ENV"
	ssh $USER_NAME@$IP  "ls /home/${USER_NAME}/${CUR_ENV}/${APP_NAME}"
	if [ $? -ne 0 ]; then
		echo "文件夹不存在，创建应用目录$APP_NAME  -------------ssh $USER_NAME@$IP "
		ssh $USER_NAME@$IP  "mkdir -p  /home/${USER_NAME}/${CUR_ENV}/${APP_NAME}"
		#./deploy/dingding.sh '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：远程服务器不存在'${APP_NAME}'目录 \n构建状态：failure'
	else
		echo "$APP_NAME存在"
	fi
	echo "传输打好的jar包: $TARGET_JAR  $CUR_ENV"
	scp $TARGET_JAR  jenkins@$IP:/home/${USER_NAME}/${CUR_ENV}/${APP_NAME}/${APP_NAME}-1.0.0-${BUILD_NUMBER}.jar
	if [ $? -ne 0 ];then
		echo "传输jar包失败"
		echo '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：传输脚本以及jar包失败 \n构建状态：failure'
		./deploy/dingding.sh '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：传输jar包失败 \n构建状态：failure'
		exit
	fi
	
	ssh $USER_NAME@$IP   "rm -rf /home/$USER_NAME/${CUR_ENV}/${APP_NAME}/deploy"
	
	
	
	echo "端口：$APP_PORT"
	echo "传输发布脚本后执行脚本"
	DEPLOY_DIR=$(pwd)/deploy
	scp -r  $DEPLOY_DIR jenkins@$IP:/home/$USER_NAME/${CUR_ENV}/${APP_NAME}
	if [ $? -ne 0 ]; then
		echo "传输脚本"
		echo "$REMOTE_RESULT"
		./deploy/dingding.sh '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：传输脚本失败 \n构建状态：failure'
		exit
	else
		echo "传输脚本以及jar包成功"
		echo "执行远程命令：$REMOTE_CMD"
		ssh $USER_NAME@$IP  "$REMOTE_CMD"
		if [ $? -ne 0 ]; then
			echo "远程agent脚本执行失败"
			./deploy/dingding.sh '【Jenkins构建通知】:'${JOB_NAME}' - Build #'${BUILD_NUMBER}'\n项目名称:'${JOB_NAME}'\n构建分支:'${BRANCH}'\n构建编号：'${BUILD_NUMBER}'\n构建应用：'${APP_NAME}'\n提交信息：'${CHANGE_LOG}'\n提交者：'${GIT_USER_NAME}'\n构建信息：执行远程agent.sh失败 \n构建状态：failure'
			exit
		fi
		echo "备份部署好的jar包,只保留一个jar包"
		mkdir -p $JENKINS_HOME/repo/$CUR_ENV/$APP_NAME
		rm -rf $JENKINS_HOME/repo/$CUR_ENV/$APP_NAME/*
		cp  $TARGET_JAR $JENKINS_HOME/repo/$CUR_ENV/$APP_NAME
		find $JENKINS_HOME/repo/$CUR_ENV/$APP_NAME  -mtime +7 -name "*.jar" -exec rm -rf {} \;
	fi
}



main